package com.example.concurrent.chapter14;

/**
 * @author Liuqz
 * @date 2018/11/25 20:25
 *
 * 懒汉+同步单例模式
 *
 * 该单例模式既满足了懒加载又能百分之百地保证instance实例的唯一性,但是synchronized关键字天生的排他性导致了getInstance方法只能在同一时间被一个线程访问,性能低下
 */

//final不允许被继承
public final class lazyAndSynchronizationSingleton {

    //实例变量
    private byte[] data = new byte[1024];

    private static lazyAndSynchronizationSingleton instance = null;

    private lazyAndSynchronizationSingleton() {

    }

    //向getInstance方法加入同步控制,每次只能一个线程能够进入
    public static synchronized lazyAndSynchronizationSingleton getInstance() {
        if (null == instance) {
            return new lazyAndSynchronizationSingleton();
        }
        return instance;
    }
}
